1. Field of the Invention
The present invention relates to upgrading the hardware and software configuration of a closed system, such as a network appliance, system control console, or the like. More particularly, the present invention provides a technique for eliminating user interaction during system boot when the operating system (OS) detects the presence of new hardware components or the absence of previously recognized hardware components.
2. Description of Related Art
With the continual advance of computer technology, systems are becoming increasingly large and complex. For example, many server type computers are being coupled to form multi-node systems which may include hundreds, if not thousands of interconnected computer processors. These processors may be organized into many logical partitions which will be controlled by multiple hardware management consoles to control, monitor, or the like, the various functions of the multi-node systems. These computing systems demonstrate an extremely large resource and financial commitment by the purchasers. Due to their high cost, purchasers will not be able to upgrade their entire systems and management consoles as fast as the technology changes. However, peripheral devices and software will be periodically added to existing computer systems to enhance their capabilities in various areas, such as graphics and video processing, communications, networking, storage, and the like.
Additionally, there are other so-called “closed” computer systems that are also becoming more prevalent in today's computer driven world. A “closed” system is typically one having a fixed hardware and software configuration. For example, these systems may include personal digital assistants (PDAs), cellular phones, set top boxes, dedicated controllers, such as found in automobiles, and the like. Further, these types of systems include network appliances which are computer systems that are essentially dedicated to a specific type of networking application and not available to be updated. Other such “closed” systems include the hardware management consoles used to control various computer systems coupled together in a multiprocessing, or clustering environment. Hardware management consoles are also often used to manage various partitions in a data processing system. Partitioning refers to the allocation of hardware resources (processors, memory, I/O adapters, communications adapters, and the like) found in a single system to multiple operating system instances running on that system. Partitioning can be done physically through switches, routers, and the like or logically by use of address translation techniques with cause various instructions and data to be available to only a specified operating system instance. Similarly, a hardware management appliance is another type of “closed system” contemplated by the present invention. A hardware management appliance will be used to control and/or monitor the various functions present in a computer system, such as powering on and off the system being managed to ensure the components are initialized in the proper sequence, etc.
Data processing apparatus which are configured to operate with a specific type of hardware and software can be considered a closed system. Most, if not all, closed systems will include some type of input/output (I/O) device that will allow the software to be upgraded. For example, a PDA may have a synchronization port that provides connection to a desktop PC. Cellular phones can be accessed through a wireless connection and controllers typically include some type of communication port to access external data. Further, a hardware management console may include I/O devices, such as a CD ROM or diskette drive, as well as a communication port, or the like. Thus, systems are typically considered to be “closed” based on their specific software configuration, which does not provide for (or contemplate) the addition of hardware components and their corresponding device drivers.
However, like all types of computers, it is often desirable to upgrade “closed” systems with new hardware and software components. In this case a recovery/install image for each computer system model must be created. A recovery/install image is used by a manufacturer to preload software on a specific type of computer system. Also, the recovery/install image will be used by the user to reinstall the software should a major machine component fail, such as a hard drive, or the like. It is an expensive proposition to have separate recovery/install images for each machine model, and presents maintenance problems, since each different model of the same type of system will have a different basic set of software.
Further, while many operating systems include a non-interactive hardware detection capability, they require a user to login and run various commands in order to clean up the system software, such as when new hardware is added, or diagnostics need to be run. It can be seen that this type of solution is not practical for many computer appliances, including a hardware management console, since the are closed systems.
One example that illustrates the need for a system, such as the present invention, occurs when new hardware components are released and a system upgrade is desired. If the same image produced for the previous hardware is used for installation, the operating system (AIX, Linux) will detect the new (or removed) hardware, such as a video card, ethernet card, or the like. Typically an initialization program is invoked during system startup (boot). This initialization program will usually time out after a preset time, such as 30 seconds, if there is not user interaction with the graphical user interface (GUI). A GUI is normally a user friendly software application that allows the user to interact with the system by selecting from various displayed icons and/or typing intuitive word commands in defined fields, rather than requiring the actual system commands to be memorized and input at a command prompt, such as the C:\ prompt in DOS.
With conventional systems, the initialization program times out if the user does not interact with the system after 30 seconds. It can be understood that a significant problem will exist when the hardware being modified is the graphics or video adapter cards which control the display monitor. More particularly, when new display adapter cards are installed, the display monitor will not function until the system is initialized with new device drivers, but this cannot occur until the initialization program is run, which requires input from a user via a GUI displayed on the monitor. Further, this situation can also occur when the GUI from the initialization software is waiting for input from a newly installed device, such as a communications adapter, expanded memory, etc., but the device cannot respond without the appropriate software being installed which is dependent on user input to the initialization program.
Therefore, it can be seen that a need exists for a technique that supports upgrading a closed system without user interaction.